const https = require('https');
const fs = require('fs');
const path = require('path');
const express = require('express');

const app = express();
const PORT = 4430;

// 静态文件服务
app.use(express.static(path.join(__dirname)));

// 默认路由
app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'index.html'));
});

// 使用 selfsigned 库生成证书（更简单的方法）
const selfsigned = require('selfsigned');

// 生成自签名证书
console.log('正在生成自签名证书...');
const attrs = [{ name: 'commonName', value: 'localhost' }];
const pems = selfsigned.generate(attrs, { days: 365 });

const options = {
    key: pems.private,
    cert: pems.cert
};

// 创建 HTTPS 服务器
const server = https.createServer(options, app);

server.listen(PORT, () => {
    console.log(`🔒 HTTPS 服务器运行在: https://localhost:${PORT}`);
    console.log('📁 静态文件目录:', __dirname);
    console.log('🌐 访问地址:');
    console.log(`   - 主页: https://localhost:${PORT}/index.html`);
    console.log(`   - 签到页面: https://localhost:${PORT}/signin.html`);
    console.log('');
    console.log('⚠️  注意: 这是自签名证书，浏览器会显示安全警告，选择"继续访问"即可');
});

// 错误处理
server.on('error', (err) => {
    if (err.code === 'EADDRINUSE') {
        console.error(`❌ 端口 ${PORT} 已被占用，请尝试其他端口`);
    } else {
        console.error('❌ 服务器错误:', err);
    }
});

// 优雅关闭
process.on('SIGINT', () => {
    console.log('\n🔄 正在关闭服务器...');
    server.close(() => {
        console.log('✅ 服务器已关闭');
        process.exit(0);
    });
});
